#include "Timestamp.h"

#include <time.h>

Timestamp::Timestamp():microSecondsSinceEpoch_(0) {}

Timestamp::Timestamp(int64_t microSecondsSinceEpoch)
    :microSecondsSinceEpoch_(microSecondsSinceEpoch) 
    {}

//获取时间
Timestamp Timestamp::now()
{
    //time(NULL) 调用返回当前的时间戳（自 1970 年 1 月 1 日以来的秒数），然后这个时间戳被用来构造一个 Timestamp 对象。
    return Timestamp(time(NULL));
}

//时间转化为string输出
std::string Timestamp::toString() const
{
    char buf[128] = {0};
    //在这段代码中，tm 是 struct tm 的类型，它是一个在C和C++标准库中定义的用于时间表示的结构体。
    tm* tm_time = localtime(&microSecondsSinceEpoch_);
    snprintf(buf,128,"%4d/%02d/%02d %02d:%02d:%02d",
        //自 1900 年起的年数
        tm_time->tm_year+1900,
        //月份，范围从 0（一月）到 11（十二月）
        tm_time->tm_mon+1,
        tm_time->tm_mday,
        tm_time->tm_hour,
        tm_time->tm_min,
        tm_time->tm_sec);
    return buf;
}

// #include <iostream>
// int main()
// {
//     std::cout << Timestamp::now().toString()<<std::endl;
//     return 0;
// }

